home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / systems / emulate / spectrum / spectrum.txt < prev   
Text File  |  1995-11-25  |  20KB  |  384 lines

  1.                          ZX-SPECTRUM Emulator V1.0
  2.                          =========================
  3.  
  4. 1. Einleitung
  5. -------------
  6. Wozu  ein ZX-Spectrum Emulator? - Nun, wer diesen Computer höchstens dem Namen
  7. nach  kennt,  kann  obige  Frage berechtigt  stellen.  Der  mindestens  ebenso
  8. erfolgreiche  Nachfolger des legendären ZX-81 ist ein 8-Bit Rechner mit 48  kB
  9. Hauptspeicher,  256  x 192 Pixel Grafikschirm in 16 Farben (max. 2 Farben  pro
  10. Zeichenposition)  und  Pieps-Sound.  Hoffnungslos   veraltet  also  für  einen
  11. verwöhnten ST-User.
  12. Wer  aber, wie der Autor, seinerzeit seine ersten Programmierfrustrationen  am
  13. ZX-81  erlebte,  und  dann hoffnungsvoll auf den ZX-SPECTRUM  wechselte,  wird
  14. dieses  Gerät  für  immer wohlwollend im  Gedächtnis  behalten.  Umfangreiches
  15. Basic,  nahezu  unerschöpflicher  Speicher (für  ZX-81  Verhältnisse),  üppige
  16. Farbenpracht  und  sogar  die Möglichkeit Töne zu erzeugen.  Binnen  kürzester
  17. Zeit  brach  eine  Softwareflut über diesen Rechner herein,  weil  er  äußerst
  18. einfach  und komfortabel zu programmieren war. Etliche der heute am  ST-Sektor
  19. bekannten  Software-Firmen  haben  sich  damals am  Spectrum  erste  Lorbeeren
  20. geholt.  Kurzum:  Er ist es schon wert, in Erinnerung behalten zu werden,  der
  21. alte  "Specci" und der Autor hofft durch die Übertragung auf den Atari ST noch
  22. lange  ab und zu einen Blick auf ihn werfen zu können. (Sollte ja  schließlich
  23. auch  am  TT und vielleicht auch noch am SF - so müßte der Nachfolger  des  TT
  24. logischerweise  heißen - noch funktionsfähig sein). Und mag sein, daß es  noch
  25. ein  paar  Leutchen gibt, die ähnlich empfinden... Ihnen ist  dieser  Emulator
  26. gewidmet!
  27.  
  28. Der  Autor  möchte  an dieser Stelle ganz besonders Christoph  Zwerschke,  dem
  29. Verfasser  des  superben ZX-81-Emulators für den ST, seinen Dank  aussprechen.
  30. Erst  angesichts  dieser  Demonstration der  prinzipiellen  Machbarkeit  eines
  31. ZX-Emulators  war  meine  Motivation wieder einmal groß genug,  um  die  schon
  32. jahrelang  angesammelten  Pläne endlich in die Tat umzusetzen. Gerne gebe  ich
  33. auch zu, im Werke meines Vorbildes mich ein wenig belehrt zu haben. Nach einem
  34. halben  Jahr zäher Optimierungen und Ringen um jeden Taktzyklus, immer  wieder
  35. unterbrochen  von grausamen Abstürzen und wunderlichen Effekten am  Bildschirm
  36. kann an der Eigenständigkeit dieses Programmierepos nicht gezweifelt werden.
  37.  
  38. Ein  riesiges Danke auch an meine Frau (die nun endlich aufatmen kann) für ihr
  39. Verständnis und die seelische Unterstützung in dieser Zeit.
  40.  
  41. 2. Leistung der Emulation
  42. -------------------------
  43. Der  ZX-SPECTRUM  wird erstaunlich vollständig emuliert. Der einzige  wirklich
  44. erwähnenswerte  Unterschied  zum  Original   ist,   daß  das  Hardware-Blinken
  45. (FLASH),  das  der  Spectrum  als Video-Attribut  zur  Verfügung  stellt,  aus
  46. Geschwindigkeitsgründen  (vielleicht  am  TT  dann)  nicht  unterstützt  wird.
  47. Stattdessen  werden  Zeichen  mit dem FLASH-Attribut  invers  dargestellt.  Am
  48. deutlichsten  zu merken beim Cursor im ZX-Basic, der am Original blinkt,  beim
  49. Emulator aber bloß invertiert ist. Damit läßt sich leben.
  50.  
  51. Ansonsten kann aber mit folgenden Features aufgewartet werden:
  52.  
  53. -  Die zugrundeliegende Emulation des Z80-Prozessors unterstützt sämtliche
  54.    Opcodes, auch die Operationen mit den Indexregister-Hälften und andere
  55.    'nichtoffizielle' Z80-Befehle, und die vollständige Interruptlogik des
  56.    Z80 (Interrupt-Mode 2 wird in vielen Programmen am Spectrum verwendet).
  57.  
  58. -  Die Video-Emulation stellt alle 16 Farben des Spectrum (8 Farbtöne in
  59.    jeweils zwei Intensitäten) sowohl am Farbmonitor, als auch am monochromen
  60.    Monitor (in Graustufen) dar.
  61.  
  62. -  Die I/O-Operationen für Tastatur, Lautsprecher und BORDER-Farbe (Farbe
  63.    des Bildschirmrandes) werden originalgetreu umgesetzt. Ein am
  64.    Joystick-Port des ST angeschlossener Joystick wird als KEMPSTON- und
  65.    IF2-kompatibler Joystick (zwei Standards am Spectrum) emuliert.
  66.  
  67. -  Das Kassetten-Handling des Spectrum wird vollständig auf Disk umgelenkt.
  68.    Bei Angabe eines Dateinamens beim Laden (LOAD "name"), und beim Speichern
  69.    (SAVE "name") ist dieser Vorgang transparent. Das Laden des erstbesten
  70.    Programmes vom Band via LOAD "", ist natürlich für Disks sinnlos - es
  71.    erscheint ein Fileselektor, aus welchem eines der vorhandenen Programme
  72.    ausgewählt werden kann.
  73.  
  74. 3. Start des Emulators
  75. ----------------------
  76. Es  werden  die  Dateien  SPECCI.PRG   und   SPECCI.DAT  in  einem  beliebigen
  77. Verzeichnis  auf  Diskette  oder   Festplatte   benötigt.   Nach  Starten  von
  78. SPECCI.PRG  erscheint ein Titelschirm während die Datei SPECCI.DAT nachgeladen
  79. wird  und die Initialisierung des Emulators durchgeführt wird. Dies dauert ein
  80. wenig,  weil  umfangreiche  Tabellen im Speicher angelegt werden.  Es  sollten
  81. auch  mindestens  ca. 800 kB Speicher frei sein, also auf ST's mit 512 kB  Ram
  82. oder  1040ern mit zuvielen installierten Accessories läuft die Emulation nicht
  83. (es erscheint eine Alertbox).
  84. Geschrieben  und  getestet  wurde  der Emulator auf einem 1040 STF  mit  1  Mb
  85. Speicher  und TOS 1.0. Er sollte aber zumindest am ST unter jeder  TOS-Version
  86. laufen  und  sich  auch   mit   Festplatten   vertragen.  Solange  bloß  genug
  87. Hauptspeicher vorhanden ist...
  88.  
  89. Falls der Emulator am Farbmonitor verwendet wird, bitte zuerst in die niedrige
  90. Auflösung  schalten  (ansonsten erscheint eine Alertbox). In  der  monochromen
  91. Auflösung werden die Farben durch Graustufen ersetzt.
  92.  
  93. Nach  geglückter  Initilisierung  beginnt  der  normale  Spectrum-Bootvorgang,
  94. gefolgt  von  der  Einschaltmeldung: der ST ist jetzt  ein  nahezu  originaler
  95. ZX-SPECTRUM.   (Bis auf die Geschwindigkeit allerdings, I did my best... am TT
  96. sollte die Emulation ca. so schnell wie das Original sein - mal sehen).
  97.  
  98. 4. Bedienung des Emulators
  99. --------------------------
  100. Die  Belegung  der  Spectrum-Tastatur wurde so getreu wie möglich auf  den  ST
  101. Übertragen.  Folgende  Tabelle zeigt die Belegung der Spectrum-Tasten, die  am
  102. ST entweder nicht als solche existieren oder anders belegt sind:
  103.  
  104. ZX-SPECTRUM     entspricht am ST        Bemerkung
  105. -----------------------------------------------------------------------
  106. Symbol-Shift    Alternate oder          Umschalt-Taste am Spectrum
  107.                 rechte Shift-Taste
  108. Caps-Shift      Linke Shift-Taste       temporäre Umschaltung Groß/Klein
  109. Z               Y                       Weil Spectrum englische Tastatur hat,
  110. Y               Z                       wurde dies auch am ST beibehalten
  111.  
  112. Zwecks Komfort wurden einige oft verwendeten ZX-Shift-Kombinationen auf
  113. eine der sonst unbenutzten ST-Tasten gelegt, wie aus nachstehender Tabelle
  114. hervorgeht:
  115.  
  116. ST-Taste        entspricht am ZX-SPECTRUM     Bemerkung
  117. -----------------------------------------------------------------------
  118. Control         Caps-Shift+Symbol-Shift       EXTENDED-MODE
  119. F1              Caps-Shift+1                  EDIT
  120. F2,CapsLock     Caps-Shift+2                  CAPS LOCK
  121. F3,Tab          Caps-Shift+3                  TRUE VIDEO
  122. F4,Esc          Caps-Shift+4                  INVERSE VIDEO
  123. Cursor links    Caps-Shift+5                  Cursor nach links
  124. Cursor runter   Caps-Shift+6                  Cursor nach unten
  125. Cursor rauf     Caps-Shift+7                  Cursor nach oben
  126. Cursor rechts   Caps-Shift+8                  Cursor nach rechts
  127. F9              Caps-Shift+9                  GRAPHICS-MODE
  128. Delete,BS       Caps-Shift+0                  DELETE
  129. F10             Caps-Shift+Space              BREAK (Programmabbruch)
  130. <               Symbol-Shift+O                ; (Strichpunkt)
  131. ~               Symbol-Shift+P                " (Hochkomma)
  132. ß               Symbol-Shift+C                ? (Fragezeichen)
  133. ö               Symbol-Shift+L                = (Ist gleich)
  134. ä               Symbol-Shift+Z                : (Doppelpunkt)
  135. ü               Symbol-Shift+2                @ (Absatz)
  136.  
  137.  
  138. Emulator-Steuertasten:
  139.  
  140. ST-Taste        Wirkung             Bemerkung
  141. -----------------------------------------------------------------------
  142. F6              Reset               Entspricht Reset-Knopf beim Spectrum 1)
  143. Help            Tasten-Hilfe        ZX-Tastaturschablone wird eingeblendet 2)
  144. Undo            Farbschaltung       Umschaltung farblos-Farbdarstellung 3)
  145. Insert          Unterbrechung       Erscheint Alert DESKTOP|RESET|CONTINUE
  146. Shift-F6        Desktop             Emulator beenden (ohne Abfrage)
  147.  
  148. 1) Eine Kopie des ZX-Roms wird in den Rom-Bereich des Emulators geschrieben
  149.    der Z80-Emulator zurückgesetzt und beginnt wieder bei PC=0.
  150.  
  151. 2) Am Farbmonitor wird nur ein Viertel der Schablone auf einmal eingeblendet,
  152.    mehrmaliges Drücken von HELP zeigt die restlichen Viertel.
  153.    Jede Taste außer HELP kehrt zur Emulation zurück, die Taste wird gleich
  154.    übernommen.
  155.  
  156. 3) Der Display-File des Spectrum besteht aus Pixeldaten und Attributdaten.
  157.    Bei 'farbloser' Darstellung werden die Attributdaten nicht beachtet -
  158.    die Emulation wird etwas schneller.
  159.  
  160.  
  161. 5) Laden und Speichern von Programmen
  162. -------------------------------------
  163. Programme,  Speicherbereiche,  Strings  und  Arrays   werden  genauso  wie  am
  164. Original  gespeichert:  SAVE  "name"  [CODE,  DATA,  SCREEN$].  "name"  sollte
  165. allerdings  nur aus maximal acht Zeichen bestehen (am Spectrum sind 10 Zeichen
  166. möglich).
  167. Das  Laden  funktioniert  analog, mit einer Ausnahme: Weist  am  Original  der
  168. Befehl  LOAD "" (Leerstring) an, das nächste am Band daherkommende Programm zu
  169. laden,  so ist dies im Diskbetrieb nicht anwendbar. STATTDESSEN ERSCHEINT EINE
  170. AUSWAHL-MASKE.  Je  nachdem, ob der Ladebefehl für Programme, CODE-Files  oder
  171. Variablen  war, erscheint nur die Liste der vorhandenen Dateien des jeweiligen
  172. Typs.
  173.  
  174. Erläuterungen zur Dateiauswahlmaske:
  175.  
  176. Noramlerweise  wird  versucht  die   Datei   INHALT.INF  im  aktuellen  Ordner
  177. einzulesen,  welche die Namen und Headerdaten aller Spectrum-Dateien in diesem
  178. Verzeichnis  enthält.  Sollte  das File INHALT.INF nicht vorhanden  sein  (wie
  179. gesagt,  für  jedes  Verzeichnis  separat),   so  wird  das  Verzeichnis  nach
  180. Spectrum-Dateien  'durchgescannt', was einige Zeit dauern kann. Am Schluß wird
  181. versucht,  die  Datei INHALT.INF zu schreiben, was eventuell zum  System-Alert
  182. 'Disk  schreibgeschützt'  führen  kann - also am besten  Disketten  nicht  mit
  183. Schreibschutz einlegen.
  184. Angezeigt  werden der Dateiname, die Länge in Bytes und die Startadresse  (bei
  185. Typen CODE,DATA) bzw. Auto-Start-Zeile (bei Basic-Programmen).
  186. Die  Auswahl  einer  Datei erfolgt mit den Cursortasten 'Up'  und  'Down'  und
  187. 'Return'  zum  Abschluß.  Am  oberen  Bildschirmrand  ist  der  aktuelle  Pfad
  188. angezeigt  und  kann  editiert  werden. Hat man einen  neuen  Pfad  eingegeben
  189. (nicht  mit  'Return'   abschließen!)   so   kann   mit   Lese.INF   (F1)  das
  190. Inhaltsverzeichnis eingelesen werden.
  191. Das  Inhaltsverzeichnis wird beim Speichern von Programmen, nicht  automatisch
  192. aktualisiert,  sondern  muß   mittels   Rescan   (F2)   neu   erzeugt  werden.
  193. Mit  der Taste 'Escape' kann die Dateiauswahl verlassen werden, ohne etwas  zu
  194. laden (Spectrum 'Tape Loading Error').
  195.  
  196. 6. Interna
  197. ----------
  198. Der  Spectrum-Emulator  krempelt  die Systemvektoren- und Werte  ziemlich  um.
  199. VBL-Routinen  werden abgeschalten, Tastatur und Timer-Vektoren manipuliert und
  200. der  Soundchip umprogrammiert. Bus- und Adressfehler werden abgefangen und der
  201. Illegal-Vektor  für  die Interrupt-Simulation des Z80 verwendet. Daher ist  es
  202. auch  durchaus  möglich,  daß  das  Programm  sich  mit  anderen  im  Speicher
  203. liegenden Vektorverbiegern nicht verträgt.
  204.  
  205. 7. Verlassen des Emulators
  206. --------------------------
  207. Durch  Drücken  von   Shift-F6   wird   ohne   Abfrage   sofort   zum  Desktop
  208. zurückgekehrt.  Dabei  werden  sämtliche  Systemwerte,  die  verändert  wurden
  209. (Vektoren,  Farbpalette,  Soundregistereinstellung etc.) auf die  alten  Werte
  210. zurückgesetzt.
  211.  
  212. 8. Zum Abschluß einige Spectrum-Dokumentationen
  213. -----------------------------------------------
  214.  
  215.  Speicheraufteilung (Adressbereich: 0-65535)
  216. --------------------------------------------------------------------------
  217.  00000-16383 ROM
  218.  16384-22527 Display-File (Pixeldaten)
  219.  22528-23295 Attribut-File (Farben und Attribute, zeichenorienteiert)
  220.  23296-23551 Drucker-Buffer (beliebter temporärer Speicher)
  221.  23552-23733 System-Variablen
  222.  23734-23754 Systembereich für I/O
  223.  23755-      Basic-Programm-Speicher + Variablen
  224.  Am oberen Speicherende jede Menge Systembereiche, Stacks und User-Grafik.
  225.  
  226.  Interessante Systemvariablen (Worte sind im Low-High-Format!):
  227.  
  228.  Adresse Länge  Name     Beschreibung
  229. --------------------------------------------------------------------------
  230.  23561     1    REPDEL   Zeit in 1/50 Sekunden für Tastatur-Repeat
  231.  23562     1    REPPER   Verzögerung in 1/50 Sekunden zwischen Repeats
  232.  23606     2    CHARS    Zeiger auf Zeichensatzadresse - 256
  233.  23609     1    PIP      Länge des Tastaturklicks (man versuche z.B. 10)
  234.  23627     2    VARS     Zeiger auf Variablen-Bereich des Programms
  235.  23635     2    PROG     Zeiger auf Programm-Bereich (normalerweise 23755)
  236.  23672     3    FRAMES   3 Byte Zähler (Low - High). Alle 20ms inkrementiert
  237.  23692     1    SCRCT    Anzahl der Scrolls des Screens bevor die Frage
  238.                          "scroll?" erscheint.
  239.  23730     2    RAMTOP   Adresse der letzten Speicherstelle für Basic
  240.  23732     2    P-RAMT   Adresse der physikalisch letzten Speicherstelle
  241.  
  242.  Interessante Systemaufrufe
  243. --------------------------------------------------------------------------
  244.  RANDOMIZE USR 3280         Scroll um eine Zeile nach oben
  245.  PRINT 65536-USR 7962       Freier Speicher
  246.  RANDOMIZE USR 0            Soft-Reset des Spectrum
  247.  
  248.  
  249. 9. Last but not least
  250. ---------------------
  251. Das war's. Allen jenen, die den Spectrum überhaupt nicht kennen, seinen die
  252. Programme "demo1" und "tutor" zum Aufruf empfohlen.
  253.  
  254. Würdigungen, Lob, sowie Anregungen und Kommentare bitte an folgende
  255. Adresse:
  256.  
  257.           Christian Gandler
  258.           Paletzgasse 17/3/14
  259.           A-1160 Wien
  260.  
  261.  
  262.  Viel Spaß und Ciao!
  263.  
  264.  cg, 17.03.91
  265.  
  266.  
  267.                     Version 1.1 vom 14/05/1991
  268.                     --------------------------
  269.  
  270. Einige Mängel (und auch Fehler) wurden behoben, die Betriebssicherheit erhöht.
  271. Außerdem  unterstützt der Emulator nunmehr das berüchtigte Interface I und die
  272. Microdrives.
  273.  
  274. Im Detail sind es folgende Änderungen gegenüber der Version 1.0:
  275.  
  276. -  Trap 7 Vektor wurde beim Verlassen des Emulators nicht rückgesetzt.
  277.  
  278. -  Fileselektor  liest  INHALT.INF  problemlos   ein  (In  V1.0  war  mitunter
  279.    mehrmaliges  Drücken von F1 notwendig). Weiters bleibt die Seite der  Liste
  280.    aktiv  für  den  nächsten  Aufruf. Der  Bildschirm-Modus  wird  nicht  mehr
  281.    umgeschalten, beim Verlassen des Selektors.
  282.  
  283. -  Beim  Laden aus Anwendungen heraus, erschien in V1.0 automatisch der  File-
  284.    selektor.  Numehr werden der Reihe nach alle Dateien des Typs 'Code'  ange-
  285.    boten,  was  in  der  Regel  früher oder später  zum  Erfolg  führt.  Durch
  286.    Gedrückthalten von 'Control' oder 'Alternate' beim Aufruf der Ladeoperation
  287.    erscheint der Fileselektor wie gewohnt.
  288.  
  289. -  Bei Unterbrechung via 'Insert' werden jetzt alle Z80-Register angezeigt.
  290.  
  291. -  Geringfügige Beschleunigung der Emulation
  292.  
  293. -  Interface 1 & Microdrives:
  294.    --------------------------
  295.    Der  Autor setzt voraus, daß der Leser dieser Zeilen Bescheid weiß, was mit
  296.    Interface  I' und 'Microdrive' gemeint ist, weil für alle, die damit nichts
  297.    anfangen können, ein mehrseitiger Exkurs notwendig wäre. Darum nur für alte
  298.    Sinclair-Hasen folgende Erläuterungen:
  299.  
  300.       Durch  Gedrückthalten  von   'Control'   oder  'Alternate'  während  des
  301.       Emulatorstarts  vom Desktop (bis zum Ertönen eines Glockenschlags)  wird
  302.       der  Spectrum mit dem Interface I ausgestattet. Es stehen dann also  die
  303.       fingerverstauchenden  Kommandos  wie LOAD *"m";1;"name"  zur  Verfügung.
  304.  
  305.       Damit  ein Microdrive angesprochen werden kann, ist aber noch ein  wenig
  306.       Vorarbeit  nötig.  Zunächst muß auf irgendeine Weise - zum Beispiel  mit
  307.       einem kleinen Basic-Programm (ST) eine  Datei namens :MD1 (statt der '1'
  308.       auch  2...8,  je nachdem unter welcher Nummer das  Microdrive  verwendet
  309.       werden soll)  erzeugt werden, die genau 132240 Bytes Länge hat. Das  ist
  310.       der benötigte Platz für 254 Sektoren zu 512 Bytes plus Verwaltungsbuffer
  311.       von 8192 Bytes. In GFA-Basic z.B. könnte so ein Programm so ausschauen:
  312.  
  313.                         OPEN #"o",#2,"\SPECTRUM\:MD1"
  314.                         x$=SPACE$(8192)
  315.                         PRINT #2;X$;
  316.                         X$=SPACE$(512)
  317.                         FOR i=1 TO 254
  318.                            PRINT #2;x$;
  319.                         NEXT i
  320.                         CLOSE #2
  321.  
  322.       Diese Datei muß wie angedeutet im selben Verzeichnis angelegt werden, in
  323.       dem sich der Emulator (SPECCI.PRG) befindet.
  324.  
  325.       Vom  Emulator aus muß das Microdrive wie am Original zunächst formatiert
  326.       werden,  bevor es verwendet werden kann. Dies geschieht wie gewohnt  mit
  327.       dem Kommando FORMAT "m";1;"name".
  328.  
  329.       Es  stehen  ab  jetzt   sämtliche  Microdrive-Kommandos  zur  Verfügung.
  330.       Außerdem  kann  ein Drucker über RS232-Kommandos betrieben werden  (auch
  331.       wenn er am Centronics-Port hängt). Beispiel: FORMAT "t",9600: LIST *t
  332.       ->  sendet ein Basic-Listing an den Drucker (oder was immer an der RS232
  333.       oder Centronics-Schnittstelle hängt).
  334.  
  335.                     Version 1.2 vom 02/06/1991
  336.                     --------------------------
  337.  
  338. Der  Emulator ist jetzt wirklich getester Weise voll harddisk-fähig und  läuft
  339. am  Mega  STE 4 mit 16 MHz und eingeschaltenem Cache ohne Probleme  (und  rund
  340. doppelt so schnell wie am 1040).
  341.  
  342.                     TT-Version vom 23/07/1991
  343.                     -------------------------
  344.  
  345. Wie  zu  erwarten,  konnte  ich nicht eher ruhig schlafen,  bevor  nicht  eine
  346. Version des Emulators für den Atari TT programmiert war...
  347. Aufgrund  der  verschiedenen  Prozessor-Architektur des  68030  waren  etliche
  348. Änderungen  im Algorithmus notwendig, sodaß ich eine eigene Version für den TT
  349. entwickelte, um den Sourcecode nicht allzu unübersichtlich werden zu lassen.
  350. Am  TT  muß  die  Datei SPECCITT.DAT in SPECCI.DAT unbenannt  werden,  um  den
  351. Emulator  einzurichten  (Originale Datei SPECCI.DAT - die ST-Version -  vorher
  352. löschen!).  Der Emulator läuft am TT in der niedrigen und hohen  ST-Auflösung,
  353. wobei der Cache des 68030 eingeschaltet bleiben kann.
  354.  
  355. Nebenbei habe ich nun auch die Flash-Attribute des Spectrum emuliert, weil der
  356. TT  genügend Rechenleistung dafür hat. Die UNDO-Taste schaltet jetzt  zwischen
  357. drei verschiedenen Bildschirmmodi um:
  358.  
  359.                        1) Flash wird emuliert (Nach Aufruf aktiv)
  360.                        2) Flash-Attribute invers dargestellt
  361.                        3) Attributlose Darstellung
  362.  
  363. Leider  ist der Sound am TT relativ leise, weil der Lautsprecher nicht mehr im
  364. Monitor integriert ist.
  365.  
  366. Puncto  Geschwindigkeit  läßt  sich  sagen, daß sie im  Durchschnitt  der  des
  367. Originals  gleicht. Allerdings wirklich nur im Durchschnitt - manche Programme
  368. laufen  mit  70%, andere dafür wieder mit 200% ab. Dies liegt daran,  daß  die
  369. verschiedenen Z80-Befehle unterschiedlich beschleunigt werden - ein generelles
  370. Problem der Prozessor-Emulation.
  371.  
  372. Noch konnte ich den Emulator mangels TT-Ram noch nicht in diesem schnellen Ram
  373. ablaufen  lassen, aber vermutlich dürfte die Geschwindigkeits-Steigerung  dann
  374. fast schon zu hoch sein.
  375.  
  376. Somit  lege ich nun endlich die Entwicklung des ZX-Spectrum-Emulators (bis auf
  377. Widerruf) zu den Programmier-Akten (=Backups) und Ihnen das fertige Ding unter
  378. Ihre Sammlung.
  379.  
  380. Falls  Sie ein Spectrum-Freak waren (sind?), schreiben Sie mir doch, ob  Ihnen
  381. die Emulation gefällt - würde mich freuen!
  382.  
  383. Tschüß!
  384.